package com.ys.nms.module.business.libreApi.devices.req;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Map;

/**
 * LibreNMS 设备实体
 */
@Data
public class LibreNmsDevice {

    @JSONField(name = "device_id")
    private Integer deviceId;

    @JSONField(name = "inserted")
    private LocalDateTime inserted;

    @JSONField(name = "hostname")
    private String hostname;

    @JSONField(name = "sysName")
    private String sysName;

    @JSONField(name = "display")
    private String display;

    @JSONField(name = "ip")
    private String ip;

    @JSONField(name = "overwrite_ip")
    private String overwriteIp;

    @JSONField(name = "community")
    private String community;

    @JSONField(name = "authlevel")
    private String authLevel;

    @JSONField(name = "authname")
    private String authName;

    @JSONField(name = "authpass")
    private String authPass;

    @JSONField(name = "authalgo")
    private String authAlgo;

    @JSONField(name = "cryptopass")
    private String cryptoPass;

    @JSONField(name = "cryptoalgo")
    private String cryptoAlgo;

    @JSONField(name = "snmpver")
    private String snmpver;

    // 显式定义 getter/setter，并通过 @JsonProperty 指定 JSON 字段名
    @JSONField(name = "snmpver")
    public String getSnmpver() {
        return snmpver;
    }

    @JSONField(name = "snmpver")
    public void setSnmpver(String snmpver) {
        this.snmpver = snmpver;
    }

    @JSONField(name = "port")
    private Integer port;

    @JSONField(name = "transport")
    private String transport;

    @JSONField(name = "timeout")
    private Integer timeout;

    @JSONField(name = "retries")
    private Integer retries;

    @JSONField(name = "snmp_disable")
    private Integer snmp_disable;

    @JSONField(name = "bgpLocalAs")
    private Long bgpLocalAs;

    @JSONField(name = "sysObjectID")
    private String sysObjectId;

    @JSONField(name = "sysDescr")
    private String sysDescr;

    @JSONField(name = "sysContact")
    private String sysContact;

    @JSONField(name = "version")
    private String version;

    @JSONField(name = "hardware")
    private String hardware;

    @JSONField(name = "features")
    private String features;

    @JSONField(name = "location_id")
    private Long locationId;

    @JSONField(name = "os")
    private String os;

    @JSONField(name = "status")
    private Byte status;

    @JSONField(name = "status_reason")
    private String statusReason;

    @JSONField(name = "ignore")
    private Byte ignore;

    @JSONField(name = "disabled")
    private Byte disabled;

    @JSONField(name = "uptime")
    private Long uptime;

    @JSONField(name = "agent_uptime")
    private Integer agentUptime;

    @JSONField(name = "last_polled")
    private LocalDateTime lastPolled;

    @JSONField(name = "last_poll_attempted")
    private LocalDateTime lastPollAttempted;

    @JSONField(name = "last_polled_timetaken")
    private Double lastPolledTimetaken;

    @JSONField(name = "last_discovered_timetaken")
    private Double lastDiscoveredTimetaken;

    @JSONField(name = "last_discovered")
    private LocalDateTime lastDiscovered;

    @JSONField(name = "last_ping")
    private LocalDateTime lastPing;

    @JSONField(name = "last_ping_timetaken")
    private Double lastPingTimetaken;

    @JSONField(name = "purpose")
    private String purpose;

    @JSONField(name = "type")
    private String type;

    @JSONField(name = "serial")
    private String serial;

    @JSONField(name = "icon")
    private String icon;

    @JSONField(name = "poller_group")
    private Integer pollerGroup;

    @JSONField(name = "override_sysLocation")
    private Byte overrideSysLocation;

    @JSONField(name = "notes")
    private String notes;

    @JSONField(name = "port_association_mode")
    private Integer port_association_mode;

    @JSONField(name = "max_depth")
    private Integer maxDepth;

    @JSONField(name = "disable_notify")
    private Byte disableNotify;

    @JSONField(name = "ignore_status")
    private Byte ignoreStatus;

    @JSONField(name = "quyu")
    private Integer quyu;

    @JSONField(name = "quyusub")
    private Integer quyusub;

    @JSONField(name = "tag1")
    private String tag1;

    @JSONField(name = "tag2")
    private String tag2;

    @JSONField(name = "tag3")
    private String tag3;

    @JSONField(name = "tag4")
    private String tag4;

    @JSONField(name = "tag5")
    private String tag5;

    @JSONField(name = "tag6")
    private String tag6;

    @JSONField(name = "tag7")
    private String tag7;

    @JSONField(name = "tag8")
    private String tag8;

    @JSONField(name = "tag9")
    private String tag9;

    @JSONField(name = "tag10")
    private String tag10;

    @JSONField(name = "tag11")
    private String tag11;

    @JSONField(name = "tag12")
    private String tag12;

    @JSONField(name = "tag13")
    private String tag13;

    @JSONField(name = "xianlu")
    private String xianlu;

    @JSONField(name = "snmpyes")
    private String snmpYes;

    @JSONField(name = "type_name")
    private String typeName;

    @JSONField(name = "x")
    private BigDecimal x;

    @JSONField(name = "y")
    private BigDecimal y;
    private Map<String, Object> extra;
}



